async function ${nodeId}(context) {
    let ResponseExecuteSuccessFinally = false;
    let node = {'debugLog': []};
    let jsonResult = new JsonResult();
<#include "common/InitLogging.ftl">
    try {
        try {
            node.${nodeId} = context;
            <#if defaultValueMap?exists && (defaultValueMap?size > 0) >
                <#list defaultValueMap?keys as key>
                    if (node.${nodeId}.${key} == '' || node.${nodeId}.${key} == undefined || node.${nodeId}.${key} == null) {
                        node.${nodeId}.${key} = '${defaultValueMap[key]}';
                    }
                </#list>
            </#if>
            <#if paramsCheck?? && (paramsCheck?size > 0)>
                <#list paramsCheck as paramCheck>
                    if (node.${nodeId}.${paramCheck} === '' || node.${nodeId}.${paramCheck} == undefined || node.${nodeId}.${paramCheck} == null) {
                        debugLogging.pushDebug('error : param (${paramCheck}) must not be empty');
                        throw new Error('error : param (${paramCheck}) must not be empty');
                    }
                </#list>
            </#if>
            debugLogging.assignOutput(node.${nodeId});
        } catch (e) {
            <#include "common/Catch.ftl">
        } finally {
            logEndTime = DebugLogging.getTimestamp();
            debugLogging.assignCommNoOutputParam('${nodeId}', '${nodeType}', '${nodeName}', node.${nodeId}, logStartTime, logEndTime);
            node.debugLog.push(debugLogging);
        }
        <#if methodCalls?? && (methodCalls?size > 0)>
            <#list methodCalls as call>
                ${call}
            </#list>
        </#if>
    } catch (e) {
        jsonResult.code = 500;
        jsonResult.debugLog = node.debugLog;
        jsonResult.msg = 'error';
        jsonResult.data = e.message;
        return JSON.stringify(jsonResult);
    } finally {
    }
}